package persistencia;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import negocio.TarifaIndustrialConCargo;
import negocio.TarifaIndustrialSinCargo;
import negocio.TarifaResidencialConSubsidio;
import negocio.TarifaResidencialSinSubsidio;

public class TarifaDao {
	
	private static TarifaDao instancia;
	
	public static TarifaDao getInstancia(){
		if(instancia==null){
			instancia=new TarifaDao();
		}
		return instancia;
	}
	
	public void agregarTarifaResidencialSinSubsidio(TarifaResidencialSinSubsidio trs){
		Connection con=DataSource.obtenerConexion();
		PreparedStatement ps=null;
		String query=null;
		try{
			query="insert into Tarifas values(?,?,?,?,?,?,null,0,0,null,0,0)";
			ps=con.prepareStatement(query);
			ps.setString(1, trs.getDescripcionIva());
			ps.setFloat(2, trs.getIva());
			ps.setString(3,trs.getDescripcionMetro());
			ps.setFloat(4, trs.getMetroCubico());
			ps.setString(5, trs.getDescripcionContribuciones());
			ps.setFloat(6, trs.getContribucionesMunicipales());
			
			ps.execute();
			
			DataSource.cerrarConexion();
			
			
		}catch(Exception e){
			System.out.println("Error en insert tarifa residencial sin subsidio>>   "+e.getMessage());
	
		}
		
	}
	
	public void agregarTarifaResidencialConSubsidio(TarifaResidencialConSubsidio trc){
		Connection con=DataSource.obtenerConexion();
		PreparedStatement ps=null;
		String query=null;
		try{
			query="insert into Tarifas values(?,?,?,?,?,?,null,0,0,?,?,?)";
			ps=con.prepareStatement(query);
			ps.setString(1, trc.getDescripcionIva());
			ps.setFloat(2, trc.getIva());
			ps.setString(3,trc.getDescripcionMetro());
			ps.setFloat(4, trc.getMetroCubico());
			ps.setString(5, trc.getDescripcionContribuciones());
			ps.setFloat(6, trc.getContribucionesMunicipales());
			ps.setString(7, trc.getDescripcionSubsidio());
			ps.setFloat(8, trc.getSubsidioPorcentaje());
			ps.setFloat(9, trc.getSubsidioTope());
			
			ps.execute();
			
			DataSource.cerrarConexion();
			
			
		}catch(Exception e){
			System.out.println("Error en insert tarifa residencial con subsidio>>   "+e.getMessage());

		}
		
	}
	
	public void agregarTarifaIndustrialSinRecargo(TarifaIndustrialSinCargo tis){
		Connection con=DataSource.obtenerConexion();
		PreparedStatement ps=null;
		String query=null;
		try{
			query="insert into Tarifas values(?,?,?,?,?,?,null,0,0,null,0,0)";
			ps=con.prepareStatement(query);
			ps.setString(1, tis.getDescripcionIva());
			ps.setFloat(2, tis.getIva());
			ps.setString(3,tis.getDescripcionMetro());
			ps.setFloat(4, tis.getMetroCubico());
			ps.setString(5, tis.getImpuestoIngresos());
			ps.setFloat(6, tis.getImpuestoaIngresosBrutos());
			
			ps.execute();
			
			DataSource.cerrarConexion();
			
			
		}catch(Exception e){
			System.out.println("Error en insert tarifa industrial sin cargo>>   "+e.getMessage());

		}
	}
		public void agregarTarifaIndustrialConCargo(TarifaIndustrialConCargo tic){
			Connection con=DataSource.obtenerConexion();
			PreparedStatement ps=null;
			String query=null;
			try{
				query="insert into Tarifas values(?,?,?,?,?,?,?,?,?,null,0,0) ";
				ps=con.prepareStatement(query);
				ps.setString(1, tic.getDescripcionIva());
				ps.setFloat(2, tic.getIva());
				ps.setString(3,tic.getDescripcionMetro());
				ps.setFloat(4, tic.getMetroCubico());
				ps.setString(5, tic.getImpuestoIngresos());
				ps.setFloat(6, tic.getImpuestoaIngresosBrutos());
				ps.setString(7, tic.getDescripcion());
				ps.setFloat(8, tic.getRecargoTranspPorcentaje());
				ps.setFloat(9, tic.getRecargoTransTope());
				
				ps.execute();
				
				DataSource.cerrarConexion();
				
				
			}catch(Exception e){
				System.out.println("Error en insert tarifa industrial con cargo>>   "+e.getMessage());

			}
			
		}
		
		public TarifaResidencialSinSubsidio obtenerTRS(){
			Connection con=DataSource.obtenerConexion();
			TarifaResidencialSinSubsidio t= new TarifaResidencialSinSubsidio();
			Statement st=null;
			ResultSet rs=null;
			String query=null;
			try{
				query="select * from Tarifas where DescripcionIva='I.V.A: Con. Final' and descripcionSubsidio=null";
				st=con.createStatement();
				rs=st.executeQuery(query);
				while(rs.next()){
					t.setDescripcionIva(rs.getString("DescripcionIva"));
					t.setIva(rs.getFloat("PorcentajeIva"));
					t.setDescripcionMetro(rs.getString("DescripcionMetroCubico"));
					t.setMetroCubico(rs.getFloat("porcentajeMetroCubico"));
					t.setDescripcionContribuciones(rs.getString("DescripcionImpuesto"));
					t.setContribucionesMunicipales(rs.getFloat("PorcentajeImpuesto"));
					
				}
				
				DataSource.cerrarConexion();
			}catch(Exception e){
			System.out.println("no se trajo la trs"+e.getMessage());
			}
			return t;
		}
		public TarifaResidencialConSubsidio obtenerTRC(){
			Connection con=DataSource.obtenerConexion();
			TarifaResidencialConSubsidio tc=new TarifaResidencialConSubsidio();
			Statement st=null;
			ResultSet rs=null;
			String query=null;
			try{
				query="select * from Tarifas where DescripcionIva='I.V.A: Con. Final' and descripcionSubsidio='DescripcionSubsidio'";
				st=con.createStatement();
				rs=st.executeQuery(query);
				while(rs.next()){
					tc.setDescripcionIva(rs.getString("DescripcionIva"));
					tc.setIva(rs.getFloat("PorcentajeIva"));
					tc.setDescripcionMetro(rs.getString("DescripcionMetroCubico"));
					tc.setMetroCubico(rs.getFloat("porcentajeMetroCubico"));
					tc.setDescripcionContribuciones(rs.getString("DescripcionImpuesto"));
					tc.setContribucionesMunicipales(rs.getFloat("PorcentajeImpuesto"));
					tc.setDescripcionSubsidio(rs.getString("DescripcionSubsidio"));
					tc.setSubsidioPorcentaje(rs.getFloat("porcentajeSubsidio"));
					tc.setSubsidioTope(rs.getFloat("TopeSubsidio"));
					
				}
				
				DataSource.cerrarConexion();
			}catch(Exception e){
			System.out.println("no se trajo la trc"+e.getMessage());
			}
			return tc;
		}
		public TarifaIndustrialSinCargo obtenerTIS(){
			Connection con=DataSource.obtenerConexion();
			TarifaIndustrialSinCargo ti=new TarifaIndustrialSinCargo();
			Statement st=null;
			ResultSet rs=null;
			String query=null;
			try{
				query="select * from Tarifas where DescripcionIva='I.V.A: Resp. Inscripto' and DescripcionRercargos=null";
				st=con.createStatement();
				rs=st.executeQuery(query);
				while(rs.next()){
					ti.setDescripcionIva(rs.getString("DescripcionIva"));
					ti.setIva(rs.getFloat("PorcentajeIva"));
					ti.setDescripcionMetro(rs.getString("DescripcionMetroCubico"));
					ti.setMetroCubico(rs.getFloat("porcentajeMetroCubico"));
					ti.setImpuestoIngresos(rs.getString("DescripcionImpuesto"));
					ti.setImpuestoaIngresosBrutos(rs.getFloat("PorcentajeImpuesto"));
					
				}
				
				DataSource.cerrarConexion();
			}catch(Exception e){
			System.out.println("no se trajo la trs"+e.getMessage());
			}
			return ti;
		}
		
		public TarifaIndustrialConCargo obtenerTIC(){
			Connection con=DataSource.obtenerConexion();
			TarifaIndustrialConCargo tic=new TarifaIndustrialConCargo();
			Statement st=null;
			ResultSet rs=null;
			String query=null;
			try{
				query="select * from Tarifas where DescripcionIva='I.V.A: Resp. Inscripto' and DescripcionRercargos='Recargo trans'";
				st=con.createStatement();
				rs=st.executeQuery(query);
				while(rs.next()){
					tic.setDescripcionIva(rs.getString("DescripcionIva"));
					tic.setIva(rs.getFloat("PorcentajeIva"));
					tic.setDescripcionMetro(rs.getString("DescripcionMetroCubico"));
					tic.setMetroCubico(rs.getFloat("porcentajeMetroCubico"));
					tic.setImpuestoIngresos(rs.getString("DescripcionImpuesto"));
					tic.setImpuestoaIngresosBrutos(rs.getFloat("PorcentajeImpuesto"));
					tic.setDescripcion(rs.getString("DescripcionRecargos"));
					tic.setRecargoTranspPorcentaje(rs.getFloat("porcentajeRecargos"));
					tic.setRecargoTransTope(rs.getFloat("topeRecargo"));
				}
				
				DataSource.cerrarConexion();
			}catch(Exception e){
			System.out.println("no se trajo la trs"+e.getMessage());
			}
			return tic;
		}
		

}
